// 1.请写出该代码块执行顺序

// 1.script start
// 2.async1 start
// 3.async2
// 4.promise1
// 5.script end
// 6.async1 end
// 7.promise2
// 8.setTimeout


// 2.请将该 data 数组铺平
const data = [ {
  id: 1,
  title: "课程 1", children: [
  { id: 4, title: "课程 1-1" }, {
  id: 5,
  title: "课程 1-2", children: [
  { id: 6, title: "课程 1-2-1" },
  { id: 7, title: "课程 1-2-2" }, ],
  }, ],
  },
  { id: 2, title: "课程 2" }, 
  { id: 3, title: "课程 3" },
];
const deepFn = (arr) => {
  const res = []
  let fn = (arr2) => {
    arr2.forEach(item => {
      const _obj = {
        id: item.id,
        title: item.title
      }
      res.push(_obj)
      if (item.hasOwnProperty('children')) {
        fn(item.children)
      }
    })
  }
  fn(arr)
  return res
}

console.log(deepFn(data))

// 3.请实现函数防抖
// const handlerFn = (fn, delay = 100) {
//   let timer = null

//   return function (){
//     if (timer) {
//       clearTimeout(timer)
//     } else {
//       timer = setTimeout(() => {
//         fn.apply(this, arguments)
//         timer = null
//       }, delay)
//     }
//   }
// }